CKYC Upload API
The following document highlights the details of the CKYC Upload API.
API Description
Objective
The CKYC Upload API lets your organization securely send user KYC records to the Central KYC Records Registry (CKYCRR) through HyperVerge. It handles file creation, encryption, and upload automatically to ensure safe and compliant data transfer.
For each Regulated Entity, the maximum permissible CKYC data upload to CKYCRR is limited to 1 GB per day.
| Input | Output |
|---|---|
| User KYC details including OVD images and metadata for Individual, Individual with Related Person, or Legal Entity records | Confirmation that the upload request has been successfully registered |
API URL
The following URLs are available for CKYC Upload API calls in testbed and production environments:
Testbed URL
https://ind-ckyc.dev.hyperverge.co/api/v1/customer/upload
Production URL
https://ind-ckyc.hyperverge.co/api/v1/customer/upload
API Endpoint
customer/upload
Overview
The CKYC Upload API is RESTful and uses standard HTTP verbs and status codes. The responses are in JSON format, and all files and images must be uploaded as form-data through a POST request.
Method - POST
Authentication
You need a unique pair of application ID (appId) and application key (appKey) from HyperVerge to verify your identity for accessing the CKYC Upload API.
Headers
| Header | Mandatory / Optional | Description | Input Format |
|---|---|---|---|
content-type | Mandatory | Media type of the request payload | multipart/form-data |
appId | Mandatory | The application ID shared by HyperVerge. You can find the details in the dashboard's credentials tab | This should be a unique value |
appKey | Mandatory | The application key shared by HyperVerge. You can find the details in the dashboard's credentials tab | This should be a unique value |
transactionId | Mandatory | A unique identifier for tracking a user journey | This should be both unique and easily associated with the user's journey in your application(s) |
Inputs
Provide the following request body parameters based on the type of entity being uploaded:
| Parameter | Mandatory / Optional | Type | Description | Input Format | Default Value |
|---|---|---|---|---|---|
[parameter] | Mandatory (at least one document is mandatory along with a photo of the user for individual records) | string | The Officially Valid Documents (OVDs) images that need to be uploaded to the Central KYC Records Registry for Individual and Legal Entity records. These include document parameters such as:
For official guidelines on image quality and document scanning standards, please refer here. | Kindly refer to the complete list of acceptable documents for image verification. | Not Applicable |
metaData | Mandatory | string | The user information being uploaded to the Central KYC Records Registry. The payload inside this metaData parameter must be in JSON format. | Kindly refer to the list of fields to be uploaded to the CKYCRR. | Not Applicable |
Request
The CKYC Upload API request body varies based on the type of entity being uploaded:
- Individual: For accounts where a single person is the account holder.
- Individual with Related Person: For cases where an individual's KYC includes details of a related person (e.g., guardianship, joint accounts, or power of attorney). Related Person is mandatory in case of minors.
- Legal Entity: For organizations such as companies, partnerships, trusts, HUFs, societies, and other non-individual entities.
- Individual
- Individual with Related Persons
- Legal Entity
curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/customer/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_App_ID>' \
--header 'appKey: <Enter_the_App_Key>' \
--header 'transactionId: <Enter_the_Transaction_ID>' \
--form 'metadata="{}"' \
//below are the parameters for uploading OVD images for an individual
--form 'photo=@"<path_to_photo>"' \
--form 'aadhaarFront=@"<path_to_aadhaar_front>"' \
--form 'aadhaarBack=@"<path_to_aadhaar_back>"' \
--form 'idFront=@"<path_to_front_side_of_ID>"' \
--form 'idBack=@"<path_to_back_side_of_ID>"' \
--form 'passportFront=@"<path_to_passport_front>"' \
--form 'passportBack=@"<path_to_passport_back>"' \
--form 'dlFront=@"<path_to_driving_license_front>"' \
--form 'dlBack=@"<path_to_driving_license_back>"' \
--form 'voterIdFront=@"<path_to_voter_id_front>"' \
--form 'voterIdBack=@"<path_to_voter_id_back>"' \
--form 'voteridFront=@"<path_to_voterid_front>"' \
--form 'voteridBack=@"<path_to_voterid_back>"' \
--form 'jobCard=@"<path_to_job_card>"' \
--form 'signature=@"<path_to_signature>"' \
--form 'nationalPopRegLetter=@"<path_to_national_pop_reg_letter>"' \
--form 'ekycAuth=@"<path_to_ekyc_auth>"' \
--form 'aadhaarOffline=@"<path_to_aadhaar_offline>"'
curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/customer/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_App_ID>' \
--header 'appKey: <Enter_the_App_Key>' \
--header 'transactionId: <Enter_the_Transaction_ID>' \
--form 'metadata="{}"' \
//below are the parameters for uploading OVD images for an individual
--form 'photo=@"<path_to_photo>"' \
--form 'aadhaarFront=@"<path_to_aadhaar_front>"' \
--form 'aadhaarBack=@"<path_to_aadhaar_back>"' \
--form 'idFront=@"<path_to_front_side_of_ID>"' \
--form 'idBack=@"<path_to_back_side_of_ID>"' \
--form 'passportFront=@"<path_to_passport_front>"' \
--form 'passportBack=@"<path_to_passport_back>"' \
--form 'dlFront=@"<path_to_driving_license_front>"' \
--form 'dlBack=@"<path_to_driving_license_back>"' \
--form 'voterIdFront=@"<path_to_voter_id_front>"' \
--form 'voterIdBack=@"<path_to_voter_id_back>"' \
--form 'voteridFront=@"<path_to_voterid_front>"' \
--form 'voteridBack=@"<path_to_voterid_back>"' \
--form 'jobCard=@"<path_to_job_card>"' \
--form 'signature=@"<path_to_signature>"' \
--form 'nationalPopRegLetter=@"<path_to_national_pop_reg_letter>"' \
--form 'ekycAuth=@"<path_to_ekyc_auth>"' \
--form 'aadhaarOffline=@"<path_to_aadhaar_offline>"' \
//below are the documents to be sent in case of related persons for individuals
--form 'aadhaarRelatedPerson1=@"<path_to_aadhaar_related_person_1>"' \
--form 'voterIdRelatedPerson1=@"<path_to_voter_id_related_person_1>"' \
--form 'nregaRelatedPerson1=@"<path_to_nrega_related_person_1>"' \
--form 'passportRelatedPerson1=@"<path_to_passport_related_person_1>"' \
--form 'dlRelatedPerson1=@"<path_to_driving_license_related_person_1>"' \
--form 'nationalPopRegLetterRelatedPerson1=@"<path_to_national_pop_reg_letter_related_person_1>"' \
--form 'ekycAuthRelatedPerson1=@"<path_to_ekyc_auth_related_person_1>"' \
--form 'aadhaarOfflineRelatedPerson1=@"<path_to_aadhaar_offline_related_person_1>"' \
--form 'photoRelatedPerson1=@"<path_to_photo_related_person_1>"'
//at least one of each needs to be uploaded
Legal entities must provide details of at least one related person.
curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/customer/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_App_ID>' \
--header 'appKey: <Enter_the_App_Key>' \
--header 'transactionId: <Enter_the_Transaction_ID>' \
--form 'metadata="{}"' \
//below are the parameters for uploading OVD images for a Legal Entity
--form 'officiallyValidDoc=@"<path_to_officially_valid_document>"' \
--form 'certificateOfIncorporation=@"<path_to_certificate_of_incorporation>"' \
--form 'regCertificate=@"<path_to_registration_certificate>"' \
--form 'memorandum=@"<path_to_memorandum>"' \
--form 'partnershipDeed=@"<path_to_partnership_deed>"' \
--form 'trustDeed=@"<path_to_trust_deed>"' \
--form 'boardResolution=@"<path_to_board_resolution>"' \
--form 'powerOfAttorney=@"<path_to_power_of_attorney>"' \
--form 'activityProof1=@"<path_to_activity_proof_1>"' \
--form 'activityProof2=@"<path_to_activity_proof_2>"' \
--form 'other=@"<path_to_other_document>"' \
//below are the documents to be sent in case of related persons for Legal Entities
--form 'aadhaarRelatedPerson1=@"<path_to_aadhaar_related_person_1>"' \
--form 'voterIdRelatedPerson1=@"<path_to_voter_id_related_person_1>"' \
--form 'nregaRelatedPerson1=@"<path_to_nrega_related_person_1>"' \
--form 'passportRelatedPerson1=@"<path_to_passport_related_person_1>"' \
--form 'dlRelatedPerson1=@"<path_to_driving_license_related_person_1>"' \
--form 'nationalPopRegLetterRelatedPerson1=@"<path_to_national_pop_reg_letter_related_person_1>"' \
--form 'ekycAuthRelatedPerson1=@"<path_to_ekyc_auth_related_person_1>"' \
--form 'aadhaarOfflineRelatedPerson1=@"<path_to_aadhaar_offline_related_person_1>"' \
--form 'photoRelatedPerson1=@"<path_to_photo_related_person_1>"'
//at least one of each needs to be uploaded
Metadata
This section details all fields that can be included in the metaData parameter, with sample code snippets illustrating the structure and parameters for each KYC category: Individual, Individual with Related Person, and Legal Entity.
- Individual
- Individual with Related Person
- Legal Entity
{
"constitutionType": "01",
"isDifferentlyAbled": "yes",
"percentageOfImpairment": 20,
"typeOfImpairment": 1,
"udidNumber": "<Enter_the_udid_number>",
"residentialStatus": "<Enter_the_residential_status>",
"branchCode": "<Enter_the_branch_code>",
"accountType": "01",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantMiddleName": "<Enter_the_applicant_middle_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"applicantMaidenNamePrefix": "<Enter_the_applicant_maiden_name_prefix>",
"applicantMaidenFirstName": "<Enter_the_applicant_maiden_first_name>",
"applicantMaidenMiddleName": "<Enter_the_applicant_maiden_middle_name>",
"applicantMaidenLastName": "<Enter_the_applicant_maiden_last_name>",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"spouseNamePrefix": "<Enter_the_spouse_name_prefix>",
"spouseFirstName": "<Enter_the_spouse_first_name>",
"spouseMiddleName": "<Enter_the_spouse_middle_name>",
"spouseLastName": "<Enter_the_spouse_last_name>",
"motherNamePrefix": "<Enter_the_mother_name_prefix>",
"motherFirstName": "<Enter_the_mother_first_name>",
"motherMiddleName": "<Enter_the_mother_middle_name>",
"motherLastName": "<Enter_the_mother_last_name>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>", // pass FORM_60 if PAN unavailable
"permanentCurrentAddressMatch": "Y",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "<Enter_the_country>",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_current_state>",
"country": "<Enter_the_current_country>",
"pincode": "<Enter_the_current_pincode>",
"proof": "<Enter_the_current_proof>"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"idDetails": [
{
"type": "<Enter_the_id_type>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
{
"constitutionType": "01",
"branchCode": "<Enter_the_branch_code>",
"accountType": "<Enter_the_account_type>",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantMiddleName": "<Enter_the_applicant_middle_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"applicantMaidenNamePrefix": "",
"applicantMaidenFirstName": "",
"applicantMaidenMiddleName": "",
"applicantMaidenLastName": "",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"spouseNamePrefix": "<Enter_the_spouse_name_prefix>",
"spouseFirstName": "<Enter_the_spouse_first_name>",
"spouseMiddleName": "<Enter_the_spouse_middle_name>",
"spouseLastName": "<Enter_the_spouse_last_name>",
"motherNamePrefix": "<Enter_the_mother_name_prefix>",
"motherFirstName": "<Enter_the_mother_first_name>",
"motherMiddleName": "<Enter_the_mother_middle_name>",
"motherLastName": "<Enter_the_mother_last_name>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>",
"permanentCurrentAddressMatch": "<Enter_the_permanent_current_address_match>",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "<Enter_the_country>",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_current_state>",
"country": "<Enter_the_current_country>",
"pincode": "<Enter_the_current_pincode>",
"proof": "<Enter_the_current_proof>"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"idDetails": [
{
"type": "<Enter_the_id_type>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>",
"relatedPersons": [
{
"typeOfRelation": "<Enter_the_type_of_relation>",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantMiddleName": "<Enter_the_applicant_middle_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"applicantMaidenNamePrefix": "",
"applicantMaidenFirstName": "",
"applicantMaidenMiddleName": "",
"applicantMaidenLastName": "",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"spouseNamePrefix": "<Enter_the_spouse_name_prefix>",
"spouseFirstName": "<Enter_the_spouse_first_name>",
"spouseMiddleName": "<Enter_the_spouse_middle_name>",
"spouseLastName": "<Enter_the_spouse_last_name>",
"motherNamePrefix": "<Enter_the_mother_name_prefix>",
"motherFirstName": "<Enter_the_mother_first_name>",
"motherMiddleName": "<Enter_the_mother_middle_name>",
"motherLastName": "<Enter_the_mother_last_name>",
"aadhaar": "<Enter_the_aadhaar>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>",
"permanentCurrentAddressMatch": "<Enter_the_permanent_current_address_match>",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "<Enter_the_country>",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_current_state>",
"country": "<Enter_the_current_country>",
"pincode": "<Enter_the_current_pincode>",
"proof": "<Enter_the_current_proof>"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"idDetails": [
{
"type": "<Enter_the_id_type>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
]
}
{
"constitutionType": "D",
"branchCode": "<Enter_the_branch_code>",
"entityName": "<Enter_the_entity_name>",
"doi": "<Enter_the_doi>",
"placeOfIncorporation": "<Enter_the_place_of_incorporation>",
"doc": "<Enter_the_doc>",
"countryOfIncorporation": "IN",
"pan": "<Enter_the_pan>", // pass FORM_60 if PAN unavailable
"permanentCurrentAddressMatch": "Y",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "KA",
"country": "IN",
"pincode": "<Enter_the_pincode>",
"proof": "certificateOfIncorporation"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_state>",
"country": "IN",
"pincode": "<Enter_the_current_pincode>",
"proof": "certificateOfIncorporation"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"relatedPersons": [
{
"typeOfRelation": "<Enter_the_type_of_relation>",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"aadhaar": "<Enter_the_aadhaar>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>",
"permanentCurrentAddressMatch": "Y",
"address": {
"line1": "<Enter_the_address_line1>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "IN",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"idDetails": [
{
"type": "<Enter_the_id_type_such_as_aadhaar>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
],
"idDetails": [
{
"type": "certificateOfIncorporation",
"number": "<Enter_the_certificateOfIncorporation_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
Metadata Details
| Parameter | Mandatory / Optional | Type | Description | Input Format | Default Value |
|---|---|---|---|---|---|
constitutionType | Mandatory | string | Type of constitution of the applicant | String. Refer to the constitution type reference for valid values. | Not Applicable |
constitutionTypeOthers | Mandatory if constitutionType is 'R' for legal entities | string | Other constitution type details | String must be of length 1–20 | Not Applicable |
isDifferentlyAbled | Mandatory | string | Indicates if the applicant is differently abled | yes / no | no |
percentageOfImpairment | Optional | number | Percentage of impairment | Number between 1–100 | Not Applicable |
typeOfImpairment | Optional | number | Type of impairment | Number. Please refer to here. | Not Applicable |
udidNumber | Optional | string | Unique Disability Identity (UDID) number | String. 18-character UDID string, formatted as two alphabets followed by sixteen digits. | Not Applicable |
residentialStatus | Mandatory | string | Applicant's residential status | '01' – Resident Individual '02' – Non Resident Indian '03' – Foreign National '04' – Person of Indian Origin | Not Applicable |
branchCode | Mandatory | string | Branch code of the Financial Institution | String, must not be empty, with a length between 1–15 | Not Applicable |
accountType | Mandatory | string | Type of account | 01 – Normal 04 – OTP Based E-KYC 05 – Minor | Not Applicable |
entityName | Mandatory | string | Registered Legal Entity name | String | Not Applicable |
applicantNamePrefix | Mandatory | string | Prefix for applicant name | String must be within 1–5 characters | Not Applicable |
applicantFirstName | Mandatory | string | Applicant's first name | String must be within 1–50 characters | Not Applicable |
applicantMiddleName | Optional | string | Applicant's middle name | String must be within 1–50 characters | Not Applicable |
applicantLastName | Mandatory | string | Applicant's last name | String must be within 1–50 characters | Not Applicable |
applicantMaidenNamePrefix | Optional | string | Prefix of maiden name | String must be within 1–5 characters | Not Applicable |
applicantMaidenFirstName | Optional | string | Maiden first name | String must be within 1–50 characters | Not Applicable |
applicantMaidenMiddleName | Optional | string | Maiden middle name | String must be within 1–50 characters | Not Applicable |
applicantMaidenLastName | Optional | string | Maiden last name | String must be within 1–50 characters | Not Applicable |
fatherNamePrefix | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Prefix for father's name | String must be within 1–5 characters | Not Applicable |
fatherFirstName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Father's first name | String must be within 1–50 characters | Not Applicable |
fatherMiddleName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Father's middle name | String must be within 1–50 characters | Not Applicable |
fatherLastName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Father's last name | String must be within 1–50 characters | Not Applicable |
spouseNamePrefix | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Prefix for spouse's name | String must be within 1–5 characters | Not Applicable |
spouseFirstName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Spouse's first name | String must be within 1–50 characters | Not Applicable |
spouseMiddleName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Spouse's middle name | String must be within 1 –50 characters | Not Applicable |
spouseLastName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Spouse's last name | String must be within 1–50 characters | Not Applicable |
motherNamePrefix | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Prefix for mother's name | String must be within 1–5 characters | Not Applicable |
motherFirstName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Mother's first name | String must be within 1–50 characters | Not Applicable |
motherMiddleName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Mother's middle name | String must be within 1–50 characters | Not Applicable |
motherLastName | Conditional (at least one of Mother's, Father's, or Spouse's name is required) | string | Mother's last name | String must be within 1–50 characters | Not Applicable |
gender | Mandatory | string | Applicant's gender | 'M' – Male 'F' – Female 'T' – Transgender | Not Applicable |
dob | Mandatory | string | Date of birth | String in the format DD-MM-YYYY. Must not be a present or future date. | Not Applicable |
doi | Mandatory | string | Date of incorporation of the entity | String in the format DD-MM-YYYY. Must not be a present or future date. | Not Applicable |
doc | Optional | string | Date of commencement of business | String in the format DD-MM-YYYY. Must not be a present or future date. | Not Applicable |
pan | Mandatory (unless FORM_60 provided) | string | PAN number of applicant or FORM 60. In case of FORM 60, the Regulated Entity must collect Form 60 as per regulatory compliance. The API expects only the defined key–value pairs as per the schema. | Valid PAN / FORM_60 | Not Applicable |
permanentCurrentAddressMatch | Mandatory | string | Flag indicating if permanent and current address are the same | 'Y' / 'N' | Not Applicable |
address.line1 | Mandatory | string | Address line 1 of permanent address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
address.line2 | Optional | string | Address line 2 of permanent address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
address.line3 | Optional | string | Address line 3 of permanent address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
address.city | Mandatory | string | City of permanent address | String must be within 1–50 characters | Not Applicable |
address.district | Mandatory for India, optional for other countries | string | District of permanent address | String must be within 1–50 characters | Not Applicable |
address.state | Mandatory | string | State of permanent address (2-char CERSAI code or full state name accepted) | 2-char CERSAI code or full state name (auto-normalised; spelling variants supported). See supported state list. | Not Applicable |
address.country | Mandatory | string | Country of permanent address | 2-character ISO country code. See ISO codes reference. | India |
address.pincode | Mandatory | string | Pincode of permanent address | String | Not Applicable |
address.proof | Mandatory | string | Proof document for permanent address | Please refer to this list for valid address proof documents. | Not Applicable |
currentAddress.line1 | Mandatory if permanentCurrentAddressMatch = N | string | Address line 1 of current address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
currentAddress.line2 | Optional | string | Address line 2 of current address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
currentAddress.line3 | Optional | string | Address line 3 of current address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
currentAddress.city | Mandatory if permanentCurrentAddressMatch = N | string | City of current address | String must be within 1–50 characters | Not Applicable |
currentAddress.district | Mandatory if permanentCurrentAddressMatch = N and country is India | string | District of current address | String must be within 1–50 characters | Not Applicable |
currentAddress.state | Mandatory if permanentCurrentAddressMatch = N | string | State of current address (2-char CERSAI code or full state name accepted) | 2-char CERSAI code or full state name (auto-normalised; spelling variants supported). See supported state list. | Not Applicable |
currentAddress.country | Mandatory if permanentCurrentAddressMatch = N | string | Country of current address | 2-character ISO country code. See ISO codes reference. | Not Applicable |
currentAddress.pincode | Mandatory if permanentCurrentAddressMatch = N | string | Pincode of current address | String | Not Applicable |
currentAddress.proof | Mandatory if permanentCurrentAddressMatch = N | string | Proof document for current address | Please refer to this list for valid address proof documents. | Not Applicable |
contact.residenceTelephoneStdCode | Optional | string | STD code for residence telephone | String must be between 1–4 characters | Not Applicable |
contact.residenceTelephone | Optional | string | Residence telephone number | String must be of 10 characters | Not Applicable |
contact.officeTelephoneStdCode | Optional | string | STD code for office telephone | String must be between 1–4 characters | Not Applicable |
contact.officeTelephone | Optional | string | Office telephone number | String must be of 10 characters | Not Applicable |
contact.mobileIsdCode | Mandatory | string | ISD code for mobile number | String must be between 1–3 characters | Not Applicable |
contact.mobile | Mandatory | string | Mobile number of applicant | String must be of 10 characters | Not Applicable |
contact.email | Mandatory | string | Applicant's email address | String must be of valid email format and should be between 1–100 characters | Not Applicable |
contact.faxStdCode | Optional | string | Standard code for fax number | String must be of length 1–4 characters | Not Applicable |
contact.fax | Optional | string | Fax number | String must be of length 1–10 characters | Not Applicable |
idDetails[].type | Mandatory | string | Type of ID submitted | Please refer to this list for valid ID document types. | Not Applicable |
idDetails[].number | Mandatory | string | ID number corresponding to ID type | String | Not Applicable |
dateOfDeclaration | Mandatory | string | Date on which the applicant made the declaration | String must be of length 10 characters in DD-MM-YYYY format | Not Applicable |
placeOfDeclaration | Mandatory | string | Place where the applicant made the declaration | String must be within 1–50 characters | Not Applicable |
placeOfIncorporation | Mandatory | string | Place of incorporation of the entity | String must not be null or undefined. Must be of length between 1–50. | Not Applicable |
countryOfIncorporation | Mandatory | string | Country of incorporation of the entity | 2-character ISO country code. See ISO codes reference. | IN |
dateOfKYCVerification | Mandatory | string | Date of KYC verification for the applicant | String must be of length 10 characters in DD-MM-YYYY format | Not Applicable |
typeOfDocumentSubmitted | Mandatory | string | Type of KYC document used for verification | Individual | Not Applicable |
kycVerificationName | Mandatory | string | Name of the authorized KYC official at the Regulated Entity (RE) who has verified the user's KYC details prior to CKYC upload | String must be within 1–50 characters | Not Applicable |
kycVerificationDesignation | Mandatory | string | Designation of verifier | String must be within 50 characters | Not Applicable |
kycVerificationBranch | Mandatory | string | Branch where verification took place | String must be within 1–50 characters | Not Applicable |
kycVerificationEmpCode | Mandatory | string | Employee code of verifier | String must be within 1–50 characters | Not Applicable |
relatedPersons[].typeOfRelation | Mandatory | string | Type of relation with main applicant | Numeric code. See related person type reference for valid values. | Not Applicable |
relatedPersons[].applicantNamePrefix | Mandatory | string | Prefix for related person's name | String must be within 1–5 characters | Not Applicable |
relatedPersons[].applicantFirstName | Mandatory | string | First name of related person | String must be within 1–50 characters | Not Applicable |
relatedPersons[].applicantMiddleName | Optional | string | Middle name of related person | String must be within 1–50 characters | Not Applicable |
relatedPersons[].applicantLastName | Mandatory | string | Last name of related person | String must be within 1–50 characters | Not Applicable |
relatedPersons[].applicantMaidenNamePrefix | Optional | string | Prefix of maiden name (if applicable) | String must be within 1–5 characters | Not Applicable |
relatedPersons[].applicantMaidenFirstName | Optional | string | Maiden first name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].applicantMaidenMiddleName | Optional | string | Maiden middle name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].applicantMaidenLastName | Optional | string | Maiden last name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].fatherNamePrefix | Mandatory | string | Prefix for father's name | String must be within 1–5 characters | Not Applicable |
relatedPersons[].fatherFirstName | Mandatory | string | Father's first name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].fatherMiddleName | Optional | string | Father's middle name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].fatherLastName | Mandatory | string | Father's last name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].spouseNamePrefix | Optional | string | Prefix for spouse's name | String must be within 1–5 characters | Not Applicable |
relatedPersons[].spouseFirstName | Optional | string | Spouse's first name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].spouseMiddleName | Optional | string | Spouse's middle name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].spouseLastName | Optional | string | Spouse's last name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].motherNamePrefix | Optional | string | Prefix for mother's name | String must be within 1–5 characters | Not Applicable |
relatedPersons[].motherFirstName | Optional | string | Mother's first name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].motherMiddleName | Optional | string | Mother's middle name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].motherLastName | Optional | string | Mother's last name | String must be within 1–50 characters | Not Applicable |
relatedPersons[].aadhaar | Mandatory | string | Aadhaar number of related person | First 8 digits of the Aadhaar must be masked | Not Applicable |
relatedPersons[].gender | Mandatory | string | Gender of related person | 'M' – Male 'F' – Female 'T' – Transgender | Not Applicable |
relatedPersons[].dob | Mandatory | string | Date of birth of related person | String in the format DD-MM-YYYY. Must not be a present or future date. | Not Applicable |
relatedPersons[].pan | Mandatory | string | PAN number of related person | Valid PAN number | Not Applicable |
relatedPersons[].permanentCurrentAddressMatch | Mandatory | string | If permanent and current address are the same | 'Y' / 'N' | Y |
relatedPersons[].address.line1 | Mandatory | string | Address line 1 of permanent address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
relatedPersons[].address.line2 | Optional | string | Address line 2 of permanent address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
relatedPersons[].address.line3 | Optional | string | Address line 3 of permanent address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
relatedPersons[].address.city | Mandatory | string | City of permanent address | String must be within 1–50 characters | Not Applicable |
relatedPersons[].address.district | Mandatory if country is India | string | District of permanent address | String must be within 1–50 characters | Not Applicable |
relatedPersons[].address.state | Mandatory | string | State of permanent address (2-char CERSAI code or full state name accepted) | 2-char CERSAI code or full state name (auto-normalised; spelling variants supported). See supported state list. | Not Applicable |
relatedPersons[].address.country | Mandatory | string | Country of permanent address | String must be of length 2 | India |
relatedPersons[].address.pincode | Mandatory | string | Pincode of permanent address | String of 6 characters | Not Applicable |
relatedPersons[].address.proof | Mandatory | string | Proof document for permanent address | Please refer to this list for valid address proof documents. | Not Applicable |
relatedPersons[].currentAddress.line1 | Mandatory if permanentCurrentAddressMatch = N | string | Address line 1 of current address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
relatedPersons[].currentAddress.line2 | Optional | string | Address line 2 of current address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
relatedPersons[].currentAddress.line3 | Optional | string | Address line 3 of current address | Total length of address (line1 + line2 + line3) cannot exceed 165 characters | Not Applicable |
relatedPersons[].currentAddress.city | Mandatory if permanentCurrentAddressMatch = N | string | City of current address | String must be within 1–50 characters | Not Applicable |
relatedPersons[].currentAddress.district | Mandatory if permanentCurrentAddressMatch = N | string | District of current address | String must be within 1–50 characters | Not Applicable |
relatedPersons[].currentAddress.state | Mandatory if permanentCurrentAddressMatch = N | string | State of current address (2-char CERSAI code or full state name accepted) | 2-char CERSAI code or full state name (auto-normalised; spelling variants supported). See supported state list. | Not Applicable |
relatedPersons[].currentAddress.country | Mandatory if permanentCurrentAddressMatch = N | string | Country of current address | String must be of length 2 | Not Applicable |
relatedPersons[].currentAddress.pincode | Mandatory if permanentCurrentAddressMatch = N | string | Pincode of current address | String | Not Applicable |
relatedPersons[].currentAddress.proof | Mandatory if permanentCurrentAddressMatch = N | string | Proof document for current address | Please refer to this list for valid address proof documents. | Not Applicable |
relatedPersons[].contact.residenceTelephoneStdCode | Optional | string | STD code for residence telephone | String must be between 1–4 characters | Not Applicable |
relatedPersons[].contact.residenceTelephone | Optional | string | Residence telephone number | String must be of 10 characters | Not Applicable |
relatedPersons[].contact.officeTelephoneStdCode | Optional | string | STD code for office telephone | String must be between 1–4 characters | Not Applicable |
relatedPersons[].contact.officeTelephone | Optional | string | Office telephone number | String must be of 10 characters | Not Applicable |
relatedPersons[].contact.mobileIsdCode | Mandatory | string | ISD code for mobile number | String must be between 1–3 characters | Not Applicable |
relatedPersons[].contact.mobile | Mandatory | string | Mobile number of related person | String must be of 10 characters | Not Applicable |
relatedPersons[].contact.email | Mandatory | string | Email of related person | String must be of valid email format and should be between 1–100 characters | Not Applicable |
relatedPersons[].idDetails[].type | Mandatory | string | Type of ID submitted | Please refer to this list for valid ID document types. | Not Applicable |
relatedPersons[].idDetails[].number | Mandatory | string | ID number corresponding to ID type | String | Not Applicable |
relatedPersons[].dateOfDeclaration | Mandatory | string | Date of declaration by related person | String must be of length 10 characters in DD-MM-YYYY format | Not Applicable |
relatedPersons[].placeOfDeclaration | Mandatory | string | Place of declaration by related person | String must be within 1–50 characters | Not Applicable |
relatedPersons[].dateOfKYCVerification | Mandatory | string | Date of KYC verification for the related person | String must be of length 10 characters in DD-MM-YYYY format | Not Applicable |
relatedPersons[].typeOfDocumentSubmitted | Mandatory | string | Type of KYC document submitted | Individual | Not Applicable |
relatedPersons[].kycVerificationName | Mandatory | string | Name of verifier | String must be within 1–50 characters | Not Applicable |
relatedPersons[].kycVerificationDesignation | Mandatory | string | Designation of verifier | String must be within 1–50 characters | Not Applicable |
relatedPersons[].kycVerificationBranch | Mandatory | string | Branch where verification took place | String must be within 1–50 characters | Not Applicable |
relatedPersons[].kycVerificationEmpCode | Mandatory | string | Employee code of verifier | String must be within 1–50 characters | Not Applicable |
tin | Optional | string | TIN/GST number issued to the entity for tax purposes | String | Not Applicable |
tinIssueCountry | Mandatory if tin is provided | string | Country that issues the TIN | String must be of length 2 | Not Applicable |
address.proofOfAddressLegal | Mandatory | string | Proof of address for legal entity | String must be within 1–75 characters | Not Applicable |
remarks | Optional | string | Any additional details or remarks on the applicant | Not Applicable | Not Applicable |
din | Mandatory for legal entity if related person type is 'Director' | string | Director Identification Number | String must be of 8 characters | Not Applicable |
Success Response
The following example shows a successful response returned by the API:
{
"status": "success",
"statusCode": "200",
"result": {
"transactionid": "<Transaction_ID>",
"message": "Request for upload has been successfully registered"
}
}
Success Response Details
The following table outlines the details of the success response from the CKYC Upload API:
| Parameter | Type | Description |
|---|---|---|
status | string | The status of the request. Returns success on a successful call. |
statusCode | string | The HTTP status code for the response. |
result.transactionid | string | The transaction ID associated with the upload request. |
result.message | string | Confirmation message indicating the upload request was successfully registered. |
Error Responses
The following examples show common error responses returned by the API:
- Missing Required Parameters
- Missing/Invalid Credentials
- Internal Server Error
{
"status": "failure",
"statusCode": "400",
"error": {
"code": "ER_REQ_VALIDATE",
"message": "user photo not found for related person"
}
}
{
"message": "Missing/Invalid credentials",
"statusCode": 401,
"status": "failure"
}
{
"statusCode": 500,
"status": "failure",
"error": "Internal Server Error"
}
Error Response Details
The following table summarizes status codes, error messages, and descriptions for CKYC Upload API errors:
| Status Code | Error Message | Error Description | Error Resolution |
|---|---|---|---|
| 400 | user photo not found for related person | A required parameter is missing or invalid in the request body | Verify all mandatory fields are included and correctly formatted in the request |
| 401 | Missing/Invalid credentials | The request is either missing the mandatory appId and appKey combination or has invalid values | Provide valid appId and appKey credentials in the request headers |
| 500 | Internal Server Error | An unexpected server-side error occurred while processing the request | Check the request headers and body for correctness, or contact the HyperVerge team for resolution |